package com.atguigu.demo09mybatisplus.handler;

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;

import java.util.Date;

@Component
public class Demo09MetaObjectHandler implements MetaObjectHandler {
    //新增时填充的回调方法：metaObject表示需要填充的 被新增的对象元数据
    @Override
    public void insertFill(MetaObject metaObject) {
        //新增: createTime和updateTime属性值都需要自动填充
        if(metaObject.hasSetter("createTime")){//表示对象有 createTime的方法
            metaObject.setValue("createTime" , new Date());
        }
        if(metaObject.hasSetter("updateTime")){//表示对象有 updateTime的方法
            metaObject.setValue("updateTime" , new Date());
        }
    }
    //更新时填充的回调方法: 填充更新时间
    @Override
    public void updateFill(MetaObject metaObject) {
        //如果对象的updateTime值是空 则填充  不是空不填充
//        this.getFieldValByName("updateTime",metaObject);  获取填充对象的指定属性值
        if(metaObject.hasSetter("updateTime")){//表示对象有 updateTime的方法
            metaObject.setValue("updateTime" , new Date());
        }
    }
}
